package com.atguigu.exercise1;

import java.util.*;

/**
 *      定义个泛型类  DAO<T>，在其中定义一个Map成员变量，Map的键为String类型，值为T类型。
 *
 *      分别创建以下方法：
 *          public void save(String id,T entity):保存T类型的对象到Map成员变量中
 *          public T get(String id)：从  map  中获取  id  对应的对象
 *          public  void update(String id,T entity)：替换map中key为id的内容,改为entity对象
 *          public List<T> list()：返回map中存放的所有T对象
 *          public void delete(String id)：删除指定id对象
 * @author : leimingchao
 * @date Date : 2021年10月07日 23:47
 */
public class DAO<T> {

    private Map<String,T> map = new HashMap<>();

    public void save(String id,T entity) {
        map.put(id,entity);
    }

    public T get(String id) {
        return map.get(id);
    }

    public  void update(String id,T entity) {

        if (map.containsKey(id)) {
            map.put(id,entity);
        }
    }

    public List<T> list() {
        //错误的：
        // Collection<T> values = map.values();
        // return (List<T>) values;
        //正确的：
        //方式一：
        Collection<T> values = map.values();
        return new ArrayList<>(values);
        // List<T> list = new ArrayList<>();
        // Collection<T> values = map.values();
        // for (T t : values) {
        //     list.add(t);
        // }
        // return list;

    }

    public void delete(String id) {

        map.remove(id);
    }
}
